package controller

import (
	"fmt"
	"managementsystem/common"
	"managementsystem/pkg/utils"

	"github.com/gin-gonic/gin"
	"github.com/jinzhu/gorm"
)

func GinUpdateScore(ctx *gin.Context) {

	db := common.Connect()
	defer db.Close()

	var data utils.StudentScore

	//查询学号是否存在
	ctx.Bind(&data)

	//数据验证
	if len(data.Sno) != 6 {
		ctx.JSON(200, gin.H{"code": 200, "msg": "学号必须6位"})
		return
	}
	if !isSnoExists(db, data.Sno) {
		ctx.JSON(200, gin.H{
			"msg": "学号不存在, 查询失败",
		})
		return
	}
	//数据验证
	if len(data.Cno) != 2 {
		ctx.JSON(200, gin.H{"code": 200, "msg": "课程号必须2位"})
		return
	}
	if !isCnoExists(db, data) {
		ctx.JSON(200, gin.H{
			"msg": "该学生没有选修此课程",
		})
		return
	}
	fmt.Println(data)

	data = common.UpdateScore(db, data)
	ctx.JSON(200, gin.H{
		"msg": "成绩修改成功！",
	})
}

func isCnoExists(db *gorm.DB, data utils.StudentScore) bool {
	var sc utils.SC

	err := db.Table("sc").Where("sno = ?", data.Sno).Where("cno = ?", data.Cno).First(&sc).Error

	return err == nil
}
